The present invention relates generally to computing systems, and more particularly, to provisioning resources for a computing application.
With advent of “on-demand” and cloud computing, information technology (IT) enterprise customers are provided with more insight and control of their infrastructure so that they can add/remove resources to support their demand and reduce costs. A customer typically defines their requirements for computing resources, e.g., number of servers, type of servers, and CPU/memory/storage/network detail for each server. Alternatively, a service provider may estimate the computing resources needed by a customer by using a model/estimator and gathering user demand data from the customer to obtain a high level estimate of the needed computing resources. In either case, whether specified by the customer or estimated by the service provider, the initially allocated computing resources are typically not monitored and tuned afterwards to meet variable demands that arise later. Often a customer is restricted to a service provider's fixed capacity templates and cannot specify different computing resources and parameters to support constant changing user demands. The existing methods for adjusting resources for a customer are mostly manual, use generic static models, and incur significantly higher IT cost for customer—even for a cloud or shared instance that hosts multiple customers on a single instance, where all customer data is stored in the same database with data model and security in place to ensure data segregation.